सी में Aakar () ऑपरेटर
SizeOf () ऑपरेटर आमतौर पर C में उपयोग किया जाता है। यह अभिव्यक्ति के आकार या चार-आकार की भंडारण इकाइयों की संख्या में निर्दिष्ट डेटा प्रकार को निर्धारित करता है। SizeOf () ऑपरेटर में एक एकल ऑपरेंड होता है जो या तो एक अभिव्यक्ति हो सकता है या एक डेटा टाइपकास्ट हो सकता है जहां कास्ट को कोष्ठक के भीतर संलग्न डेटा प्रकार है। डेटा प्रकार केवल आदिम डेटा प्रकार जैसे कि पूर्णांक या फ्लोटिंग डेटा प्रकार नहीं हो सकता है, लेकिन यह यूनियनों और संरचनाओं जैसे पॉइंटर डेटा प्रकार और यौगिक डेटा प्रकार भी हो सकता है।
आकार की आवश्यकता () ऑपरेटर
मुख्य रूप से, कार्यक्रम आदिम डेटा प्रकारों के भंडारण आकार को जानते हैं। हालांकि डेटा प्रकार का भंडारण आकार स्थिर है, यह विभिन्न प्लेटफार्मों में लागू होने पर भिन्न होता है। उदाहरण के लिए, हम SizeOf () ऑपरेटर का उपयोग करके गतिशील रूप से सरणी स्थान आवंटित करते हैं:
paunaZ *paiTiAar=smautai_AavaMTna_1(10*Aakar(paunaZ));
उपरोक्त उदाहरण में, हम SizeOf () ऑपरेटर का उपयोग करते हैं, जो टाइप इंट के कलाकारों पर लागू होता है। हम मेमोरी को आवंटित करने के लिए Malloc () फ़ंक्शन का उपयोग करते हैं और पॉइंटर लौटाते हैं जो इस आवंटित मेमोरी की ओर इशारा कर रहा है। मेमोरी स्पेस INT डेटा प्रकार द्वारा कब्जा किए गए बाइट्स की संख्या के बराबर है और 10 से गुणा किया गया है।
टिप्पणी: आउटपुट विभिन्न मशीनों पर भिन्न हो सकता है जैसे कि 32-बिट ऑपरेटिंग सिस्टम अलग-अलग आउटपुट दिखाएगा, और 64-बिट ऑपरेटिंग सिस्टम एक ही डेटा प्रकारों के विभिन्न आउटपुट दिखाएगा।
SizeOf () ऑपरेटर ऑपरेंड के प्रकार के अनुसार अलग -अलग व्यवहार करता है। Operand एक डेटा प्रकार है संचालक एक अभिव्यक्ति है
जब ऑपरेंड एक डेटा प्रकार है।
उदाहरण
#samaahitaF <PsaTidiAayaAae.Pca>
paunaZ mauqyaF()
{
paunaZ PKsa=89; // car oaaeSanaa.
mauDznama("Aakar ka car x hI %paunaZ", Aakar(PKsa)); // pzaDSZaita Aakar ka ?PKsa? car.
mauDznama("\D Aakar ka paunaZaMk deTa pzakar hI %paunaZ",Aakar(paunaZ)); //pzaDSZaita Aakar ka paunaZaMk deTa pzakar.
mauDznama("\D Aakar ka cariOa deTa pzakar hI %paunaZ",Aakar(AxarF)); //pzaDSZaita Aakar ka cariOa deTa pzakar.
mauDznama("\D Aakar ka AsYaayai deTa pzakar hI %paunaZ",Aakar(ApaunaZ)); //pzaDSZaita Aakar ka AsYaayai deTa pzakar.
naivaZtanama 0;
}
उपरोक्त कोड में, हम विभिन्न डेटा प्रकारों के आकार को प्रिंट कर रहे हैं जैसे कि paunaZ, AxarF, Aakar () ऑपरेटर की मदद से फ्लोट।
जब ऑपरेंड एक अभिव्यक्ति है
#samaahitaF <PsaTidiAayaAae.Pca>
paunaZ mauqyaF()
{
AMk maIM=78.0; //car pzaarMBa.
ApaunaZ jae=6.78; //car pzaarMBa.
mauDznama("Aakar ka (i+j) ABaivyaKtai hI : %paunaZ",Aakar(maIM+jae)); //pzaDSZaita Aakar ka ABaivyaKtai (maIM+jae).
naivaZtanama 0;
}
उपरोक्त कोड में, हमने क्रमशः दो चर 'I' और 'J' टाइप डबल और फ्लोट बनाया है, और फिर हम SizeOf (I+J) ऑपरेटर का उपयोग करके अभिव्यक्ति के आकार को प्रिंट करते हैं।
आउटपुट
Aakar ka (maIM+jae) ABaivyaKtai hI : 8
सरणियों और संरचनाओं को संभालना
उपरोक्त उपयोग के मामलों के अलावा सरणियों और संरचनाओं के साथ काम करते समय SizeOf () ऑपरेटर अत्यधिक सहायक होता है। मेमोरी के सन्निहित ब्लॉकों को सरणियों के रूप में जाना जाता है, और उनके आकार को समझना कुछ कार्यों के लिए महत्वपूर्ण है।
उदाहरण
#samaahitaF <PsaTidiAayaAae.Pca>
paunaZ mauqyaF() {
paunaZ Aagamana[] = {1, 2, 3, 4, 5};
paunaZ gairtaariRkrnaa = Aakar(Aagamana) / Aakar(Aagamana[0]);
mauDznama("Aakar ka sarnai Aagamana hI: %paunaZ\n", Aakar(Aagamana));
mauDznama("saMqyaa ka tatvaaeM maeM Aagamana hI: %paunaZ\n", gairtaariRkrnaa);
naivaZtanama 0;
}
आउटपुट
Aakar ka sarnai Aagamana hI: 20
saMqyaa ka tatvaaeM maeM Aagamana hI: 5
SizeOf (ARR) बाइट्स में सरणी के समग्र आकार को लौटाता है, जबकि SizeOf (ARR [0]) सरणी के सबसे छोटे तत्व का आकार लौटाता है। सरणी में वस्तुओं की संख्या एकल तत्व (गिरफ्तारी) के आकार से समग्र आकार को विभाजित करके निर्धारित की जाती है। इस तकनीक का उपयोग करके, कोड बदलते सरणी आकारों के सामने लचीला रहेगा। इसी तरह, आप संरचनाओं के आकार का पता लगाने के लिए Aakar () ऑपरेटर का उपयोग कर सकते हैं:
इस उदाहरण में, एक आकार के अंकन पूर्णांक सरणी में एक स्मृति होती है जिसे गतिशील रूप से आवंटित किया जाता है। NUMELEMENTS * SIZEOF (INT) बाइट्स आवंटित मेमोरी की कुल मात्रा का प्रतिनिधित्व करते हैं। ऐसा करने से, सरणी को पूर्णांक की वांछित राशि को समायोजित करने के लिए पर्याप्त जगह होने की गारंटी है।
यूनियनों के लिए Aakar ()
यूनियनों और आकार () ऑपरेटर संगत हैं। यूनियनें संरचनाओं के लिए तुलनीय हैं, केवल एक सदस्य को छोड़कर एक ही बार में सक्रिय हो सकता है, और इसके सभी सदस्य मेमोरी साझा करते हैं।
#samaahitaF <PsaTidiAayaAae.Pca>
mailana deTa {
paunaZ maIM;
ApaunaZ Ppaf;
AxarF PsaTiAar[20];
};
paunaZ mauqyaF() {
mailana deTa deTa;
mauDznama("Aakar ka mailana deTa hI: %paunaZ baaET sa\n", Aakar(deTa));
naivaZtanama 0;
}
आउटपुट
Aakar ka mailana deTa hI: 20 baaET sa
SizeOf () ऑपरेटर बेहद महत्वपूर्ण है क्योंकि यह मेमोरी प्रबंधन, पोर्टेबिलिटी और प्रभावी डेटा हैंडलिंग के लिए आवश्यक है। नीचे दी गई सूची में सूचीबद्ध कारणों के लिए Aakar () ऑपरेटर C में महत्वपूर्ण है: मेमोरी आवंटन: जब सरणियों और गतिशील मेमोरी आवंटन के साथ काम करते हैं, तो SIZEOF () ऑपरेटर का उपयोग अक्सर मेमोरी आवंटन में किया जाता है। सरणियों या संरचनाओं के लिए मेमोरी आवंटित करते समय डेटा प्रकारों के आकार को जानना गारंटी देता है कि मेमोरी की सही मात्रा आरक्षित है, मेमोरी ओवरफ्लो को कम करती है और मेमोरी उपयोग में सुधार करती है। पोर्टेबिलिटी: चूंकि सी एक लोकप्रिय प्रोग्रामिंग भाषा है, इसलिए कोड को अक्सर अलग -अलग आर्किटेक्चर और डेटा प्रकार के आकार के साथ कई प्रणालियों पर काम करना पड़ता है। चूंकि यह संकलन-समय पर डेटा प्रकारों के आकार को निर्दिष्ट करता है, आकार () ऑपरेटर ऑपरेटर को विभिन्न प्लेटफार्मों के लिए स्वचालित रूप से अनुकूलित करने के लिए कार्यक्रमों को सक्षम करके पोर्टेबल कोड को डिजाइन करने में एड्स करता है। पॉइंटर अंकगणित: जब पॉइंटर्स से निपटते हैं, तो मेमोरी ऑफसेट का पता लगाने में आकार () ऑपरेटर एड्स, डेटा संरचनाओं, सरणियों और अन्य मेमोरी क्षेत्रों के भीतर सटीक आंदोलन की अनुमति देता है। यह बेहद मददगार है जब सरणियों या गतिशील रूप से आवंटित मेमोरी में पुनरावृत्ति होती है। बाइनरी डेटा को हैंडल करना: SizeOf () ऑपरेटर गारंटी देता है कि बाइनरी डेटा या फ़ाइलों के साथ काम करते समय सही मात्रा में डेटा पढ़ा या लिखा जाता है, गलत डेटा आकार मान्यताओं द्वारा लाई गई गलतियों को समाप्त करना। यूनियनों और संरचनाओं: संरचनाओं और यूनियनों का प्रबंधन करते समय SizeOf () ऑपरेटर आवश्यक है, खासकर जब उन्हें जटिल डेटा संरचनाओं का निर्माण करने के लिए उपयोग किया जाता है। जब आप संरचनाओं और यूनियनों के आकार के बारे में जानते हैं, तो मेमोरी आवंटन और पहुंच प्रभावी और त्रुटि-मुक्त हो जाती है। सेफ बफर मैनेजमेंट: साइज़ोफ़ () ऑपरेटर यह सुनिश्चित करने में मदद करता है कि बफर काफी बड़ा है जो कि कैरेक्टर एरे (स्ट्रिंग्स) के साथ काम करते समय संसाधित किए जा रहे डेटा को पकड़ने के लिए पर्याप्त है, जिससे बफर ओवरफ्लो और संभावित सुरक्षा खामियों को रोका जा सके। डेटा सीरियलाइज़ेशन और डिसेरिअलाइजेशन: SizeOf () ऑपरेटर गारंटी देता है कि डेटा की सही मात्रा को संभाला जाता है, डेटा ट्रांसफर या स्टोरेज में डेटा अखंडता को बनाए रखा जाता है, उन स्थितियों में जहां डेटा को सीरियल (बाइट स्ट्रीम में परिवर्तित) या deserialized (एक बाइट स्ट्रीम से पुनर्प्राप्त) की आवश्यकता होती है। कोड सुधार: विभिन्न डेटा प्रारूपों के आकार को जानने से कभी -कभी कोड अनुकूलन में सहायता मिल सकती है। उदाहरण के लिए, यह कंपाइलर को अधिक प्रभावी ढंग से डेटा संरचनाओं को संरेखित करने, मेमोरी अपशिष्ट को कम करने और कैश प्रदर्शन को बढ़ाने में सक्षम बनाता है।
सी में Aakar () ऑपरेटर की आवश्यकता
SizeOf () ऑपरेटर मेमोरी प्रबंधन और डेटा प्रोसेसिंग के विभिन्न तत्वों में इसकी आवश्यकता के कारण C प्रोग्रामिंग में एक प्रमुख घटक है। डेटा प्रकार के आकारों को समझना प्रभावी रूप से मेमोरी को आवंटित करने के लिए आवश्यक है, खासकर जब सरणियों और गतिशील मेमोरी आवंटन के साथ काम करना। यह सुनिश्चित करके कि मेमोरी की उचित मात्रा आरक्षित है, यह जानकारी मेमोरी ओवरफ्लो से बचने और मेमोरी उपयोग को अनुकूलित करने में मदद करती है। पोर्टेबल कोड बनाने के लिए SizeOf () ऑपरेटर भी आवश्यक है, जो अलग -अलग आर्किटेक्चर और डेटा प्रकार के आकार के साथ कई प्रणालियों पर त्रुटि के बिना निष्पादित हो सकता है। कार्यक्रम मैनुअल संशोधनों की आवश्यकता के बिना कई प्लेटफार्मों के अनुकूल हो सकता है क्योंकि यह संकलन-समय पर डेटा प्रकारों के आकार की आपूर्ति करता है। इसके अतिरिक्त, SizeOf () ऑपरेटर पॉइंटर्स के साथ काम करते हुए, सुरक्षित और प्रभावी पॉइंटर अंकगणित की सुविधा प्रदान करते हुए डेटा संरचनाओं और सरणियों के आसपास ठीक से नेविगेट करना संभव बनाता है। SizeOf () ऑपरेटर के लिए एक और एप्लिकेशन यूनियनों और संरचनाओं को संभाल रहा है। यह सटीक मेमोरी आवंटन और जटिल डेटा संरचनाओं के भीतर पहुंच सुनिश्चित करता है, गलतियों और अक्षमताओं को रोकता है। SizeOf () ऑपरेटर एक बुनियादी उपकरण है जो C प्रोग्रामर को प्रदर्शन और डेटा अखंडता का अनुकूलन करते हुए प्रभावी, पोर्टेबल और लचीला कोड विकसित करने में सक्षम बनाता है। यह सुरक्षित बफर प्रबंधन सुनिश्चित करता है और डेटा क्रमांकन और deserialization को आसान बनाता है।
निष्कर्ष:
सारांश में, C Aakar () ऑपरेटर डेटा प्रकार, अभिव्यक्तियों, सरणियों, संरचनाओं, यूनियनों, और अधिक सहित कई प्रकार की वस्तुओं के आकार की गणना के लिए एक उपयोगी उपकरण है। चूंकि यह संकलन-समय पर डेटा प्रकारों का आकार प्रदान करता है, कई प्लेटफार्मों और सेटिंग्स के लिए खानपान, यह प्रोग्रामर को पोर्टेबल और लचीला कोड बनाने में सक्षम बनाता है। डेवलपर्स विभिन्न डेटा प्रकारों की भंडारण आवश्यकताओं के बारे में जागरूक होकर अपने कार्यक्रमों में मेमोरी आवंटन, पॉइंटर अंकगणित और गतिशील मेमोरी आवंटन को प्रभावी ढंग से संभाल सकते हैं। सरणियों और संरचनाओं के साथ काम करते समय, SizeOf () ऑपरेटर बहुत सहायक होता है क्योंकि यह उचित मेमोरी आवंटन सुनिश्चित करता है और तत्वों को पुनः प्राप्त करने के लिए सरल बनाता है। इसके अतिरिक्त, यह पॉइंटर अंकगणित की सुविधा देता है, जिससे मेमोरी क्षेत्रों के बीच आगे बढ़ना सरल हो जाता है। हालांकि, ऑपरेटर की पूर्वता के कारण, प्रोग्रामर को आकार के साथ जटिल अभिव्यक्तियों का उपयोग करते समय सतर्क रहना चाहिए। कुल मिलाकर, SIZEOF () ऑपरेटर सीखना C प्रोग्रामर को कुशल, भरोसेमंद और प्लेटफ़ॉर्म-स्वतंत्र कोड लिखने में सक्षम करके स्थिर और अनुकूलनीय सॉफ़्टवेयर समाधान बनाने के लिए सुसज्जित करता है।